Performance analysis of software often relies on timing portions of code. Typically, instrumentation may be used to time code segments using methodologies that are intrusive, inaccurate, and cannot be used on granular portions of code. For example, the most common methodology is to add read-time-stamp (RSTSC) instructions before and after code segments with a serializing instruction such as CPUID. This is what many profilers feature today to time the execution times of functions. These solutions can impact workload run time of instrumented applications and the intrusiveness of the instrumentation often changes characteristics of the original application code.